using Game.Core;
using Game.Main.Model;
using Game.Main.View;
using UnityEngine;

namespace Game.Component
{
	public class VendingMachineBoxItem : BaseItem
	{
		public override void Init(ItemArchiveData data)
		{
			base.Init(data);
			UpdateState();
		}

		private BaseItem CreateItem()
		{
			if (archiveData.createIndexs.Count < base.itemData.createAmount && base.itemData.createIds != null && parentItem != null && parentItem.itemData.scriptType == 65)
			{
				Vector3 createPosition = ((VendingMachineItem)parentItem).GetCreatePosition();
				BaseItem baseItem = Singleton<Scene>.Instance.CreateItem(base.itemData.createIds[0], createPosition, 0);
				if (baseItem != null)
				{
					parentItem.AttachItem(baseItem, DepthType.Back, AttachType.Place, false);
					baseItem.depthSystem.SortBaseNode();
					AddCreateItem(baseItem);
					baseItem.DropDown(createPosition, true);
					return baseItem;
				}
			}
			return null;
		}

		private int GetCreateItemAmount(int itemId)
		{
			int num = 0;
			for (int i = 0; i < archiveData.createIndexs.Count; i++)
			{
				if (archiveData.createIndexs[i] == itemId)
				{
					num++;
				}
			}
			return num;
		}

		public override void AddCreateItem(BaseItem item)
		{
			base.AddCreateItem(item);
			UpdateState();
		}

		public override void RemoveCreateItem(BaseItem item)
		{
			base.RemoveCreateItem(item);
			UpdateState();
		}

		public void UpdateState()
		{
			if (archiveData.createIndexs.Count >= base.itemData.createAmount)
			{
				model.gameObject.SetActive(false);
			}
			else
			{
				model.gameObject.SetActive(true);
			}
		}

		public override void QuicklyTouch(TouchEventData touchEventData)
		{
			base.QuicklyTouch(touchEventData);
			CreateItem();
		}
	}
}
